<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>01.iterator迭代器</title>
  </head>

  <body>

  </body>
  <script>
    /* 
    iterator迭代器
    1.遍历器（Iterator）就是一种机制。它是一种接口，为各种不同的数据结构提供统一的访问机制。
      任何数据结构只要部署 Iterator 接口，就可以完成遍历操作。
    2.作用：
      1.为各种数据结构，提供一个统一的，简便的访问接口
      2.使得数据结构的成员能够按某种次序排列
      3.ES6创造了一个新的遍历命令，for...of循环，Iterator主要为for...of消费
    3.工作原理
      a）.创建一个指针对象，指向当前数据结构的起始位置
      b) 第一次调用对象的 next 方法，指针自动指向数据结构的第一个成员
      c) 接下来不断调用 next 方法，指针一直往后移动，直到指向最后一个成员
      d) 每调用 next 方法返回一个包含 value 和 done 属性的对象    
    */
    let xy = ['唐僧', '孙悟空', '猪八戒', '沙僧'];

    //1.for...of遍历的是组数的值
    for (value of xy) {
      console.log(value);
    }
    //2.for...in遍历的是数组的键
    for (key in xy) {
      console.log(key);
    }
    console.log(xy);
  </script>

</html>